#!/usr/bin/env python3
"""
基础协议处理器类
"""
import asyncio
from typing import Optional

from .utils import append_jsonl
from .logger import op_logger

class ProtocolHandler:
    """
    协议处理器基类，定义了所有协议处理器的通用接口和功能
    """

    def __init__(self, name: str, host: str, port: int, log_file: str):
        """
        初始化协议处理器基类

        Args:
            name (str): 协议名称
            host (str): 监听主机地址
            port (int): 监听端口
            log_file (str): 日志文件路径
        """
        self.name = name
        self.host = host
        self.port = port
        self.log_file = log_file
        self._server: Optional[asyncio.AbstractServer] = None

    async def start(self):
        """
        启动协议处理器（需要在子类中实现）
        """
        raise NotImplementedError

    async def stop(self):
        """
        停止协议处理器
        """
        if self._server:
            self._server.close()
            await self._server.wait_closed()
            op_logger.info("%s服务器已停止", self.name.upper())

    async def persist(self, entry: dict):
        """
        将会话数据持久化到日志文件

        Args:
            entry (dict): 会话数据条目
        """
        await append_jsonl(entry, self.log_file)

    async def _simulate_network_delay(self, writer: asyncio.StreamWriter, content_length: int):
        """
        模拟网络延迟

        Args:
            writer (asyncio.StreamWriter): 流写入器
            content_length (int): 内容长度
        """
        # 根据内容长度模拟网络延迟
        delay = min(content_length / 10000, 1.0)  # 最大1秒延迟
        if delay > 0.01:
            await asyncio.sleep(delay * 0.1)
